#include <cstdio>

using namespace std;

template <typename NUM>
NUM max(NUM a, NUM b, NUM c)
{
	return a < b ? (b < c ? c : b) : (a < c ? c : a);
}

int main()
{
	printf("%d\n", max(1, 3, 2));             // int max<int>(int a, int b, int c)
	printf("%ld\n", max(100L, 20L, 50L));     // long max<long>(long a, long b, long c)
	printf("%lld\n", max(1LL, 20LL, 50LL));   // long long max<long long>(long long a, long long b, long long c)
	printf("%f\n", max(1.1F, 3.1F, 2.1F));    // float max<float>(float a, float b, float c)
	printf("%lf\n", max(11.1, 3.1, 2.1));     // double max<double>(double a, double b, double c)
	printf("%Lf\n", max(1.1L, 3.1L, 12.1L));  // long double max<long double>(long double a, long double b, long double c)
	printf("%c\n", max('a', 'b', 'c'));       // char max<char>(char a, char b, char c)

	return 0;
}
